<?php

Yii::import('inscripciones.models._base.BaseInscripcion');
Yii::import('participantes.models.*');

class Inscripcion extends BaseInscripcion {

    public $carrera;
    public $titulos;

    /**
     * @return Inscripcion
     */
    public static function model($className = __CLASS__) {
        return parent::model($className);
    }

    public static function label($n = 1) {
        return Yii::t('app', 'Inscripcion|Inscripciones', $n);
    }

    public function attributeLabels() {
        return array(
            'id' => Yii::t('app', 'ID'),
            'participante_id' => Yii::t('app', 'Participante'),
            'evento_id' => Yii::t('app', 'Evento'),
            'confirmacion' => Yii::t('app', 'Confirmacion'),
            'asistencias' => null,
            'participante' => null,
            'evento' => Yii::t('app', 'Evento'),
            'carrera' => Yii::t('app', 'Carrera'),
        );
    }

    public function scopes() {
        return array(
            'aprobados' => array(
                'condition' => 't.aprobado = :aprobado', /// cambiar condition
                'params' => array(
                    ':aprobado' => 'SI',
                )
            ),
            'confirmados' => array(
                'condition' => 't.confirmacion = :confirmacion',
                'params' => array(
                    ':confirmacion' => 1,
                )
            ),
        );
    }

    public function search() {
        $criteria = new CDbCriteria;
//         $criteria->join = 'LEFT JOIN evento ON evento.id = t.evento_id';
//         $criteria->join = 'LEFT JOIN carrera ON carrera.id= evento.carrera_id';
           $criteria->with = array('evento');

        $criteria->compare('t.id', $this->id);
        $criteria->compare('t.participante_id', $this->participante_id);
        $criteria->compare('t.evento_id', $this->evento_id);
        $criteria->compare('t.confirmacion', $this->confirmacion);
        $criteria->compare('t.aprobado', $this->aprobado, true);
        $criteria->compare('evento.carrera_id', $this->carrera);

        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
        ));
    }

    public function searchInscripcion($id = NULL) {
        $criteria = new CDbCriteria;
        if ($id) {
            $criteria->compare('id', $this->id);
        }
        $criteria->compare('participante_id', $this->participante_id, true);
        $criteria->compare('evento_id', $id);
        $criteria->compare('confirmacion', $this->confirmacion);

        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
        ));
    }

    public function searchInscripcionAprobados($id = NULL) {
        $criteria = new CDbCriteria;
        if ($id) {
//            $criteria->compare('id', $this->id);
              $criteria->compare('evento_id', $id);
        }
        else{
             $criteria->compare('evento_id', $this->evento_id);
        }
        $criteria->compare('participante_id', $this->participante_id, true);
        $criteria->compare('confirmacion', $this->confirmacion);

        return new CActiveDataProvider($this, array(
            'criteria' => $criteria,
        ));
    }

    public function searchParamsScope() {
        return array(
                //nombre completo
//            'nombre_completo' => 'concat(t.nombre,\' \',t.apellido)'
//            //nombre
//            , 'incidencia_especialista_id' => 'especialista.nombre'
//            , 'contacto_id' => 'concat(contacto.primer_nombre,\' \',contacto.primer_apellido)'
//            , 'estado_id' => 'estado0.nombre'
//            , 'prioridad_id' => 'prioridad.nombre'
        );
    }

    /**
     * search scope
     * @param type $searchParam
     * @param type $columns
     * @return \Producto
     */
//    public function de_likeAttributes($searchParam, $columns) {
//        //condicion de busqueda
//        $condition = "";
//        //relaciones del modelo a incluir
//        $relationsWith = array();
//        if ($columns) {
//            if (is_array($columns)) {
//                //recorrer los parametros
//                foreach ($columns as $column) {
//                    //sacar relacion del atributo
//                    $temp = explode('.', $column);
//                    $isRelation = false;
//                    if (is_array($temp)) {
//                        if ($temp[0] != 't') {
//                            //guarda las relaciones
//                            if (array_key_exists($temp[0], $this->relations())) {
//                                array_push($relationsWith, $temp[0]);
//                                $isRelation = true;
//                            }
//                        } else {
//                            $isRelation = true;
//                        }
//                        if ($isRelation) {
//                            if (end($columns) != $column) {
//                                
//                                if (array_key_exists($temp[1], $this->searchParamsScope())) {
//                                    $condition.=$this->searchParamsScope()[$temp[1]] . ' like "%' . $searchParam . '%" or ';
//                                } else {
//                                    $condition.=$column . ' like "%' . $searchParam . '%" or ';
//                                }
//                            } else {
//                                if (array_key_exists($temp[1], $this->searchParamsScope())) {
//                                    $condition.=$this->searchParamsScope()[$temp[1]] . ' like "%' . $searchParam . '%"';
//                                } else {
//                                    $condition.=$column . ' like "%' . $searchParam . '%"';
//                                }
//                            }
//                        }
//                    }
//                }
//            }
//            $this->getDbCriteria()->mergeWith(
//                    array(
//                        'with' => $relationsWith,
//                        'condition' => $condition
//                    )
//            );
//        }
//        return $this;
//    }

    public function de_limit($value) {
        $this->getDbCriteria()->mergeWith(array(
            'limit' => $value,
        ));
        return $this;
    }

    public function searchParams() {
        return array(
            'participante_id',
//            'cuenta_id',
//            'monto',
//            'fecha_emision',
//            'fecha_vencimiento',
        );
    }

    public function cargarFirma($id) {
        $firma = Firma::model()->findByPk($id);
        return $firma ? $firma->nombre : '';
    }

    public function cargarCargo($id) {
        $firma = Firma::model()->findByPk($id);
        return $firma ? $firma->cargo : '';
    }

}
